package wrapper;

public class IntegerDemo {
    public static void main(String[] args) {
        //演示包装类的定义：
        Integer i1=new Integer(5);
        Integer i2=new Integer(5);
        System.out.println(i1==i2);//false，==比较的是地址
        System.out.println(i1.equals(i2));//true，包装类重写了equals()方法

        //valueOf()方法会复用1个字节（-128~127）范围内的数据，建议使用valueOf()

        Integer i3=Integer.valueOf(5);
        Integer i4=Integer.valueOf(5);
        System.out.println(i3==i4);//true
        System.out.println(i3.equals(i4));//true，包装类重写了equals()方法


        //演示基本类型与包装类型之间互转:
        Integer i = Integer.valueOf(5); //基本类型转换为包装类型
        int j = i.intValue(); //包装类型转换为基本类型

        //触发了自动装箱特性，会被编译为: Integer m = Integer.values(5);
        Integer m = 5; //基本类型到引用类型-----------装
        //触发了自动拆箱特性，会被编译为: int n = m.intValue();
        int n = m; //引用类型到基本类型---------------拆

        //包装类的常用操作：
        //1）可以通过包装类来获取基本类型的取值范围
        int max=Integer.MAX_VALUE;
        int min=Integer.MIN_VALUE;
        System.out.println("int的最大值："+max+",int的最小值："+min);
        long max1=Long.MAX_VALUE;
        long min1=Long.MIN_VALUE;
        System.out.println("long的最大值："+max1+",long的最小值："+min1);
        //2）可以通过包装类将字符串转换为对应的基本类型
        String s1="123";
        int num=Integer.parseInt(s1);
        System.out.println(num);

        String s2="true";
        boolean b=Boolean.parseBoolean(s2);
        System.out.println(b);


        String s3="3.14";
        double d=Double.parseDouble(s3);
        System.out.println(d);






    }
}
